package nccloud.utils.riart;
import nc.bs.logging.Log;
import nc.vo.pub.CircularlyAccessibleValueObject;
/**
 * 记录发送第三方代办消息的日志
 * @author wy
 * @date 2024年6月24日
 */
public final class MessageLogger {
    public static String MessageLog = "msglog";//标记

    /**
     * ObmLog的构造方法
     */
    private MessageLogger() {
        super();
    }

    /**
     * 打印调试日志
     *
     * @param msg
     *            日志信息
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法名
     * @author wangxy
     * @since NC5.0
     */
    public static void debug(Object msg, Class caller, String methodName) {
        Log obmLog = Log.getInstance(MessageLog);
        obmLog.debug(msg, caller, methodName);
    }

    /**
     * 打印调试日志
     *
     * @param msg
     *            错误信息
     * @param cvos
     *            数据对象
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法
     * @author wangxy
     * @since NC5.0
     */
    public static void debug(String msg, CircularlyAccessibleValueObject cvos, Class caller,
                             String methodName) {
        debug(msg, new CircularlyAccessibleValueObject[] { cvos }, caller, methodName);
    }

    /**
     * 打印调试日志
     *
     * @param msg
     *            错误信息
     * @param cvos
     *            数据对象
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法
     * @author wangxy
     * @since NC5.0
     */
    public static void debug(String msg, CircularlyAccessibleValueObject[] cvos, Class caller,String methodName) {
        StringBuilder strbuf = new StringBuilder();
        strbuf.append(msg);
        strbuf.append("\n");
        if (cvos == null) {
            strbuf.append("数据为空！");/*-=notranslate=-*/
        } else {
            if (cvos.length == 0) {
                strbuf.append("数据为0长度数组,数据类型为:");/*-=notranslate=-*/
                strbuf.append(cvos.getClass());
            } else {
                if (cvos.length > 1) {
                    strbuf.append("数组长度为[");/*-=notranslate=-*/
                    strbuf.append(cvos.length);
                    strbuf.append("]\n");
                }
                for (int i = 0; i < cvos.length; i++) {
                    if (cvos[i] == null) {
                        strbuf.append("第[");/*-=notranslate=-*/
                        strbuf.append(i);
                        strbuf.append("]个数据为空！");/*-=notranslate=-*/
                    } else {
                        strbuf.append("第[");/*-=notranslate=-*/
                        strbuf.append(i);
                        strbuf.append("]个数据,类型:[");/*-=notranslate=-*/
                        strbuf.append("]\n");
                        String[] keys = cvos[i].getAttributeNames();
                        if (keys == null || keys.length == 0) {
                            strbuf.append("无数据!\n");/*-=notranslate=-*/
                        }
                        for (int n = 0; n < keys.length; n++) {
                            strbuf.append("{");
                            strbuf.append(keys[n]);
                            strbuf.append("} = {");
                            strbuf.append(cvos[i].getAttributeValue(keys[n]));
                            strbuf.append("}\n");
                        }
                    }
                }
            }
        }
        debug(strbuf.toString(), caller, methodName);
    }

    /**
     * 打印信息日志
     *
     * @param msg
     *            日志信息
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法名
     * @author wangxy
     * @since NC5.0
     */
    public static void info(Object msg, Class caller, String methodName) {
        Log obmLog = Log.getInstance(MessageLog);
        obmLog.info(msg, caller, methodName);
    }

    /**
     * 打印信息日志
     *
     * @param msg
     *            日志信息
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法名
     * @author wangxy
     * @since NC5.0
     */
    public static void info(Object msg) {
        Log obmLog = Log.getInstance(MessageLog);
        obmLog.info(msg);
    }
    /**
     * 打印错误日志
     *
     * @param msg
     *            日志信息
     * @param exception
     *            异常类
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法名
     * @author wangxy
     * @since NC5.0
     */
    public static void error(Object msg, Throwable exception, Class caller, String methodName) {
        Log obmLog = Log.getInstance(MessageLog);
        obmLog.error(msg, exception, caller, methodName);
    }

    /**
     * 打印错误日志
     *
     * @param msg
     *            日志信息
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法名
     * @author wangxy
     * @since NC5.0
     */
    public static void error(Object msg) {
        Log obmLog = Log.getInstance(MessageLog);
        obmLog.error(msg);
    }

    /**
     * 打印警告日志
     *
     * @param msg
     *            日志信息
     * @param exception
     *            异常类
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法名
     * @author wangxy
     * @since NC5.0
     */
    public static void warn(Object msg, Throwable exception, Class caller, String methodName) {
        Log obmLog = Log.getInstance(MessageLog);
        obmLog.warn(msg, exception, caller, methodName);
    }

    /**
     * 打印警告日志
     *
     * @param msg
     *            日志信息
     * @param caller
     *            调用类
     * @param methodName
     *            调用方法名
     * @author wangxy
     * @since NC5.0
     */
    public static void warn(Object msg, Class caller, String methodName) {
        Log obmLog = Log.getInstance(MessageLog);
        obmLog.warn(msg, caller, methodName);
    }
}
